﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BusinessLayer.Interface;
using BusinessLayer.Facade;
using EntityLayer;
using System.Drawing;
namespace PresentationLayer
{
    public partial class WebForm8 : System.Web.UI.Page
    {
        private String msg, titulo;
        private static String RutaExcel = "";
        private clsIFacadeCuadernoJudicialActualizar ICuadernoJudicialActualizar;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["coLegajo"] == "")
                    {
                        //Session["ingresar"] = false;
                        //Session["msg"] = "No existe opción para el procedimiento.";
                        //Session["titulo"] = "Mensaje";
                        Response.Redirect("wfrmCuadernoJudicialListar.aspx", false);
                        return;
                    }
                    else
                    {
                        dtp_FechaCuaderno.Text = DateTime.Now.ToShortDateString();

                       // CargarTipo_Cuaderno();
                        CargarEtapas();
                        CargarCargos();
                        CargarDemandados();
                        if (!ObtenerDatos())
                        {
                            Response.Redirect("wfrmCuadernoJudicialListar.aspx", false);
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                titulo = "Page_Load";
                MostrarComentario(ex.Message, titulo);
            }
        }

        protected void Btn_AgregarCuaderno_Click(object sender, EventArgs e)
        {
            AgregarItem();
        }

        protected void Btn_QuitarCuaderno_Click(object sender, EventArgs e)
        {
            QuitarItem();
        }

        protected void btn_GrabarCuaderno_Click(object sender, EventArgs e)
        {
            GrabarCuaderno();
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("wfrmCuadernoJudicialListar.aspx", true);
        }

        protected void dgv_Cuaderno_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            List<DetalleCuaderno> miListaCuaderno = null;
            miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];

            dgv_Cuaderno.DataSource = miListaCuaderno;
            dgv_Cuaderno.DataBind();
        }

        protected void dgv_Cuaderno_PageIndexChanged(object sender, EventArgs e)
        {
            List<DetalleCuaderno> miListaCuaderno = null;
            miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];

            dgv_Cuaderno.DataSource = miListaCuaderno;
            dgv_Cuaderno.DataBind();
        }

        protected void dgv_Cuaderno_HeaderFilterFillItems(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewHeaderFilterEventArgs e)
        {
            List<DetalleCuaderno> miListaCuaderno = null;
            miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];

            dgv_Cuaderno.DataSource = miListaCuaderno;
            dgv_Cuaderno.DataBind();
        }

        #region Metodos        
        private Boolean ObtenerDatos()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                if (Session["coLegajo"] == null) { ok = false; msg = "No existe el código del Legajo"; }
                if (ok)
                {
                    txtNumeroLegajo.ReadOnly = true;

                    String coLegajo = Session["coLegajo"].ToString();
                    ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();

                    List<V_legajos_obtener_Nombres> V_legajos_obtener_Nombres = null;
                    V_legajos_obtener_Nombres = new List<V_legajos_obtener_Nombres>();
                    V_legajos_obtener_Nombres = ICuadernoJudicialActualizar.V_legajos_obtener_Nombres(coLegajo);

                    if (V_legajos_obtener_Nombres.Count() == 0 || V_legajos_obtener_Nombres.Count() == 0)
                    {
                        ok = false;
                        msg = "No existen datos para el legajo seleccionado";
                    }

                    if (ok)
                    {
                        txtNumeroLegajo.Text = V_legajos_obtener_Nombres[0].CO_legajo;
                        txt_FechaIngreso.Value = V_legajos_obtener_Nombres[0].FE_ingreso.Value.ToString("dd/MM/yyyy");
                        txt_TDemand.Text = V_legajos_obtener_Nombres[0].TX_agraviado;
                        txt_Departamento.Text = V_legajos_obtener_Nombres[0].VR_departamento;
                        txt_Provincia.Text = V_legajos_obtener_Nombres[0].VR_provincia;
                        txt_Distrito.Text = V_legajos_obtener_Nombres[0].VR_distrito;
                        txt_Etapas.Text = V_legajos_obtener_Nombres[0].VR_etapas;
                        txt_Situcion.Text = V_legajos_obtener_Nombres[0].NO_situacion;

                        CargarCuaderno();
                    }
                }
            }
            catch (Exception ex)
            {
                ok = false;
                titulo = "ObtenerDatos";
                MostrarComentario(ex.Message, titulo);
            }
            if (!ok)
            {
                Session["ingresar"] = ok;
                Session["msg"] = msg;
            }
            return ok;
        }
        private void CargarCuaderno()
        {
            try
            {
                List<V_Listar_Cuadernos> mi_ListaCuaderno = null;
                mi_ListaCuaderno = new List<V_Listar_Cuadernos>();

                ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();
                mi_ListaCuaderno = ICuadernoJudicialActualizar.V_listarCuadernoCO_legajo(txtNumeroLegajo.Text);

                if (mi_ListaCuaderno == null || mi_ListaCuaderno.Count() == 0) { }
                else
                {
                    DetalleCuaderno ObjCuaderno_nuevo = new DetalleCuaderno();
                    List<DetalleCuaderno> miListaCuaderno = null;
                    miListaCuaderno = new List<DetalleCuaderno>();

                    int item_a = 0;
                    foreach (var s in mi_ListaCuaderno)
                    {
                        item_a = item_a + 1;

                        ObjCuaderno_nuevo.NU_item = item_a;
                        ObjCuaderno_nuevo.CO_legajo = s.CO_legajo;
                        ObjCuaderno_nuevo.CO_tipocuaderno = s.CO_tipocuaderno;
                        ObjCuaderno_nuevo.TX_tipocuaderno = s.TX_tipocuaderno;
                        ObjCuaderno_nuevo.FE_cuaderno = s.FE_cuaderno.Value;
                        ObjCuaderno_nuevo.CO_etapas = s.CO_etapas;
                        ObjCuaderno_nuevo.VR_etapas = s.VR_etapas;
                        ObjCuaderno_nuevo.CO_cargo = s.CO_cargo;
                        ObjCuaderno_nuevo.NO_Cargo = s.NO_Cargo;
                        ObjCuaderno_nuevo.CO_demandado = s.CO_demandado;
                        ObjCuaderno_nuevo.TX_nombrescompletos = s.TX_nombrescompletos;
                        ObjCuaderno_nuevo.TX_sumilla = s.TX_sumilla;
                        
                        miListaCuaderno.Add(ObjCuaderno_nuevo);
                    }

                    Session["MidetalleCuaderno"] = miListaCuaderno;
                    dgv_Cuaderno.DataSource = miListaCuaderno;
                    dgv_Cuaderno.DataBind();
                }

                //dgv_Cuaderno.DataSource = mi_ListaCuaderno;
                //dgv_Cuaderno.DataBind();

                //if (miListaCuaderno == null || miListaCuaderno.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        //private void CargarTipo_Cuaderno()
        //{
        //    try
        //    {
        //        IEnumerable<Object> listarTipo_de_cuaderno = null;
        //        listarTipo_de_cuaderno = new List<Object>();

        //        ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();
        //        listarTipo_de_cuaderno = ICuadernoJudicialActualizar.listarTipo_de_cuaderno();

        //        cbo_TipoCuaderno.DataSource = listarTipo_de_cuaderno;
        //        cbo_TipoCuaderno.ValueField = "CO_tipocuaderno";
        //        cbo_TipoCuaderno.TextField = "TX_tipocuaderno";
        //        cbo_TipoCuaderno.DataBind();
        //        cbo_TipoCuaderno.SelectedIndex = 0;

        //        if (listarTipo_de_cuaderno == null || listarTipo_de_cuaderno.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
        //    }
        //    catch (Exception ex)
        //    {
        //        MostrarComentario(ex.Message, "CargarTipoProceso");
        //    }
        //}
        private void CargarEtapas()
        {
            try
            {
                IEnumerable<Object> listarEtapas = null;
                listarEtapas = new List<Object>();

                ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();
                listarEtapas = ICuadernoJudicialActualizar.listarEtapas();

                cbo_Etapas.DataSource = listarEtapas;
                cbo_Etapas.ValueField = "CO_etapas";
                cbo_Etapas.TextField = "VR_etapas";
                cbo_Etapas.DataBind();
                cbo_Etapas.SelectedIndex = 0;

                if (listarEtapas == null || listarEtapas.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void CargarCargos()
        {
            try
            {
                IEnumerable<Object> listarCargos = null;
                listarCargos = new List<Object>();

                ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();
                listarCargos = ICuadernoJudicialActualizar.listarCargos();

                cbo_Cargos.DataSource = listarCargos;
                cbo_Cargos.ValueField = "CO_cargo";
                cbo_Cargos.TextField = "NO_Cargo";
                cbo_Cargos.DataBind();
                cbo_Cargos.SelectedIndex = 0;

                if (listarCargos == null || listarCargos.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void CargarDemandados()
        {
            try
            {
                IEnumerable<Object> listarDemandados = null;
                listarDemandados = new List<Object>();

                ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();
                listarDemandados = ICuadernoJudicialActualizar.V_Listar_NombresC_Demandados();

                cbo_Demandados.DataSource = listarDemandados;
                cbo_Demandados.ValueField = "CO_demandado";
                cbo_Demandados.TextField = "NombresCompletos";
                cbo_Demandados.DataBind();
                cbo_Demandados.SelectedIndex = 0;

                if (listarDemandados == null || listarDemandados.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            lblMensaje.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

        private void AgregarItem()
        {
            try
            {
                int count = dgv_Cuaderno.VisibleRowCount;

                DetalleCuaderno ObjCuaderno = new DetalleCuaderno();
                ObjCuaderno.NU_item = count + 1;
                ObjCuaderno.CO_legajo = txtNumeroLegajo.Text;
                ObjCuaderno.CO_tipocuaderno = "01";
                ObjCuaderno.TX_tipocuaderno = "Principal";
                ObjCuaderno.FE_cuaderno = Convert.ToDateTime(dtp_FechaCuaderno.Text);
                ObjCuaderno.CO_etapas = cbo_Etapas.SelectedItem.Value.ToString();
                ObjCuaderno.VR_etapas = cbo_Etapas.SelectedItem.Text;
                ObjCuaderno.CO_cargo = cbo_Cargos.SelectedItem.Value.ToString();
                ObjCuaderno.NO_Cargo = cbo_Cargos.SelectedItem.Text;
                ObjCuaderno.CO_demandado = cbo_Demandados.SelectedItem.Value.ToString();
                ObjCuaderno.TX_nombrescompletos = cbo_Demandados.SelectedItem.Text;
                ObjCuaderno.TX_sumilla = txt_Sumilla.Text;

                List<DetalleCuaderno> miListaCuaderno = null;
                if (Session["MidetalleCuaderno"] == null)
                {
                    miListaCuaderno = new List<DetalleCuaderno>();
                    miListaCuaderno.Add(ObjCuaderno);
                }
                else
                {
                    miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];
                    miListaCuaderno.Add(ObjCuaderno);
                }

                Session["MidetalleCuaderno"] = miListaCuaderno;
                dgv_Cuaderno.DataSource = miListaCuaderno;
                dgv_Cuaderno.DataBind();

                count = dgv_Cuaderno.VisibleRowCount;

                int Paginar = Convert.ToInt16(count / 5);
                dgv_Cuaderno.PageIndex = Paginar;
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }
        private void QuitarItem()
        {
            try
            {
                if (dgv_Cuaderno.VisibleRowCount == 0)
                {
                    MostrarComentario("No hay datos para quitar", "Error");
                }
                else
                {
                    int index = dgv_Cuaderno.FocusedRowIndex;
                    int item = (int)dgv_Cuaderno.GetRowValues(index, "NU_item");
                    List<DetalleCuaderno> miListaCuaderno = null;
                    miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];

                    miListaCuaderno.RemoveAll(x => x.NU_item == Convert.ToInt32(item));

                    DetalleCuaderno ObjCuaderno_nuevo = new DetalleCuaderno();
                    List<DetalleCuaderno> mi_nuevaListaCuaderno = null;
                    mi_nuevaListaCuaderno = new List<DetalleCuaderno>();
                    int item_a = 0;
                    foreach (var s in miListaCuaderno)
                    {
                        item_a = item_a + 1;

                        ObjCuaderno_nuevo.NU_item = (item_a);
                        ObjCuaderno_nuevo.CO_legajo = s.CO_legajo;
                        ObjCuaderno_nuevo.CO_tipocuaderno = s.CO_tipocuaderno;
                        ObjCuaderno_nuevo.TX_tipocuaderno = s.TX_tipocuaderno;
                        ObjCuaderno_nuevo.FE_cuaderno = s.FE_cuaderno;
                        ObjCuaderno_nuevo.CO_etapas = s.CO_etapas;
                        ObjCuaderno_nuevo.VR_etapas = s.VR_etapas;
                        ObjCuaderno_nuevo.CO_cargo = s.CO_cargo;
                        ObjCuaderno_nuevo.NO_Cargo = s.NO_Cargo;
                        ObjCuaderno_nuevo.CO_demandado = s.CO_demandado;
                        ObjCuaderno_nuevo.TX_nombrescompletos = s.TX_nombrescompletos;
                        ObjCuaderno_nuevo.TX_sumilla = s.TX_sumilla;

                        mi_nuevaListaCuaderno.Add(ObjCuaderno_nuevo);
                    }

                    Session["MidetalleCuaderno"] = mi_nuevaListaCuaderno;
                    dgv_Cuaderno.DataSource = mi_nuevaListaCuaderno;
                    dgv_Cuaderno.DataBind();

                    int count = dgv_Cuaderno.VisibleRowCount;

                    int Paginar = Convert.ToInt16(count / 5);
                    dgv_Cuaderno.PageIndex = Paginar;
                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }
        private void GrabarCuaderno()
        {
            try
            {
                T_Cuaderno Ent_Cuaderno;
                List<T_Cuaderno> ListaCuaderno = null;
                ListaCuaderno = new List<T_Cuaderno>();


                List<DetalleCuaderno> miListaCuaderno = null;
                miListaCuaderno = (List<DetalleCuaderno>)Session["MidetalleCuaderno"];

                foreach (var s in miListaCuaderno)
                {
                    Ent_Cuaderno = new T_Cuaderno();
                    Ent_Cuaderno.NU_item = s.NU_item;
                    Ent_Cuaderno.CO_legajo = s.CO_legajo;
                    Ent_Cuaderno.CO_tipocuaderno = s.CO_tipocuaderno;
                    Ent_Cuaderno.FE_cuaderno = Convert.ToDateTime(s.FE_cuaderno);
                    Ent_Cuaderno.CO_etapas = s.CO_etapas;
                    Ent_Cuaderno.CO_cargo = s.CO_cargo;
                    Ent_Cuaderno.CO_demandado = s.CO_demandado;
                    Ent_Cuaderno.TX_sumilla = s.TX_sumilla;

                    ListaCuaderno.Add(Ent_Cuaderno);
                }

                ICuadernoJudicialActualizar = new clsFacadeCuadernoJudicialActualizar();

                if (ICuadernoJudicialActualizar.ActualizarCuaderno(ListaCuaderno, "I", txtNumeroLegajo.Text))
                {
                    MostrarComentario("Se Actualizo Correctamente");
                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.InnerException.ToString(), "Error");
            }
        }

        private string ExtraeCodigo(string Cadena)
        {
            string[] Resultado = Cadena.Split(':');
            return Resultado[0];
        }
        #endregion

        public struct DetalleCuaderno
        {
            public int NU_item { get; set; }
            public string CO_legajo { get; set; }

            public string CO_tipocuaderno { get; set; }
            public string TX_tipocuaderno { get; set; }
            public DateTime FE_cuaderno { get; set; }

            public string CO_etapas { get; set; }
            public string VR_etapas { get; set; }
            public string CO_cargo { get; set; }
            public string NO_Cargo { get; set; }

            public string CO_demandado { get; set; }
            public string TX_nombrescompletos { get; set; }
            public string TX_sumilla { get; set; }
        }

        public struct DetalleCuaderno_nuevo
        {
            public int NU_item { get; set; }
            public string CO_legajo { get; set; }

            public string CO_tipocuaderno { get; set; }
            public string TX_tipocuaderno { get; set; }
            public string FE_cuaderno { get; set; }

            public string CO_etapas { get; set; }
            public string VR_etapas { get; set; }
            public string CO_cargo { get; set; }
            public string NO_Cargo { get; set; }

            public string CO_demandado { get; set; }
            public string TX_nombrescompletos { get; set; }
            public string TX_sumilla { get; set; }
        }
    }
}